home *** CD-ROM | disk | FTP | other *** search
- set tire(thickness) {0.100000};
- set tire(radius) {2.0};
- set tire(color) {.3 .1 .1};
-
- EveCmd {set rim(minorRadius) [expr {1.2 * $tire(thickness)}]}
- EveCmd {set rim(majorRadius) [expr {$tire(radius) *.995}]}
- set rim(color) {0.924665 0.901624 1.000000};
-
- set rubber RCRubber
- set metal RCMetal
-
- set spoke(xTranslate) 0
- set spoke(yTranslate) 0
- set spoke(zTranslate) .15
- set spoke(xTranslateIncr) 0
- set spoke(yTranslateIncr) 0
- set spoke(zTranslateIncr) 0
-
- set spoke(xRotate) -90
- set spoke(zRotate) 0
- set spoke(zRotateIncr) 20
- set spoke(lOffset) -4.25
- set spoke(rOffset) 4.25
- set spoke(yRotate) 0
- set spoke(yRotateIncr) 10
- set spoke(pairCount) 6
- #spokes should be about 10% of the thickness of the tire (say)
- EveCmd {set spoke(radius) [expr {$tire(thickness) * .1}]}
-
- loadControlPanel controls.nib
-
- startShape wheel
- startShape innerRim
- Surface $metal
- EveCmd {Color $rim(color)}
- TransformBegin
- EveCmd {Scale $tire(thickness) $tire(thickness) $tire(thickness)}
- EveCmd {Torus $tire(radius) [expr {$tire(radius) * .75}] 90 270 360}
- TransformEnd
- for {set i 0} {$i < $spoke(pairCount)} {incr i} \
- { startShape spokeL${i};
- EveCmd {Color $rim(color)};
- Surface $metal;
- Translate $spoke(xTranslate) $spoke(yTranslate) $spoke(zTranslate);
- Rotate $spoke(yRotate) 0 1 0;
- Rotate [expr {$spoke(xRotate) + $spoke(lOffset)}] 1 0 0;
- EveCmd {Cylinder $spoke(radius) 0 $tire(radius) 360};
- set spoke(yRotate) [expr {$spoke(yRotate) + $spoke(yRotateIncr)}]
- endShape;
- startShape spokeR${i};
- EveCmd {Color $rim(color)};
- Surface $metal;
- Translate $spoke(xTranslate) $spoke(yTranslate) [expr {-1 * $spoke(zTranslate)}];
- Rotate [expr {$spoke(xRotate) + $spoke(rOffset)}] 1 0 0;
- Rotate [expr {$spoke(yRotate) + $spoke(yRotateIncr)}] 0 1 0;
- #Rotate $spoke(yRotate) 0 1 0;
- EveCmd {Cylinder $spoke(radius) 0 $tire(radius) 360};
- set spoke(yRotate) [expr {$spoke(yRotate) + $spoke(yRotateIncr)}]
- endShape;
- # we want the spoke(xTranslate) to vary over 2PI for 360/$spoke(pairCount)
- set interval [expr {[format %f $i]/$spoke(pairCount)}]
- set spoke(xTranslate) [expr {.2 * sin(2. * $PI * $interval)}]
- }
- startShape tire
- Surface $rubber
- EveCmd {Color $tire(color)}
- EveCmd {Torus $tire(radius) $tire(thickness) 0 360 360}
- endShape
- startShape rim
- Surface $metal
- EveCmd {Color $rim(color)}
- EveCmd {Torus $rim(majorRadius) $rim(minorRadius) 90 270 360}
- endShape
- endShape
- endShape
-